home *** CD-ROM | disk | FTP | other *** search
/ Internet.Works 41 / Issue 41.iso / pc / PCSoftware / Netscape 6 Official Release / nim.xpi / bin / chrome / aim.jar / content / aim / SidebarPanel.js < prev    next >
Encoding:
JavaScript  |  2000-09-13  |  18.8 KB  |  647 lines

  1. /****************  Window Management *****************/
  2.  
  3.  
  4. function AimSidebarPanelOnWndLoad() {
  5.  
  6.     // Read signon prefs. We need to load at least the screen name here,
  7.     // but might as well load the password and autoLogin prefs, too.
  8.  
  9.     var screenName = aimPrefsManager().GetCharPref("aim.session.screenname", null, true);
  10.     
  11.     dump("ScreenName is " + screenName);
  12.  
  13.     var password = aimSessionGetPassword(null);
  14.     var autoLogin = aimPrefsManager().GetBoolPref("aim.session.autologin", null, false);
  15.     var firstTime = aimPrefsManager().GetBoolPref("aim.session.firsttime", null, true); // firsttime is a GLOBAL pref
  16.     
  17.     
  18.     dump("setting AIMDocumentPath \n");
  19.         top.AIMDocumentPath=window;
  20.     // If no screen name, display the registration screen
  21.     // Or even if there is a screenname if they havent launched AIM yet
  22.         
  23.     if (firstTime) {
  24.          
  25.         //launch migration wizard
  26.         aimGlobalCmdStartupWizard();
  27.     aimPrefsManager().SetBoolPref("aim.session.firsttime",false, null, true);
  28.     // firsttime is a GLOBAL pref
  29.     }    
  30.  
  31.     // Initialize online state
  32.     var state = AimDataSource.GetTarget(AimSession, SessionState, true);
  33.     if (state == null)
  34.         state = RDF.GetLiteral("Register");
  35.       
  36.     OnlineObserver.onAssert(AimDataSource, AimSession, SessionState, state);
  37.  
  38.     // Watch future changes to online state
  39.     AimDataSource.AddObserver(OnlineObserver);
  40.     
  41.     
  42.  
  43.     
  44.     // Auto login
  45.     if (screenName && screenName != '' && password && password != '' && autoLogin) {
  46.         if (state.EqualsNode(RDF.GetLiteral("Offline")))
  47.             aimSessionLogin(screenName, password);
  48.     }
  49.     
  50.     //setupChatRendezvous();
  51.     AimSidebarPanelSetAwayMsgBtn()
  52.  
  53. }
  54.  
  55.  
  56. function AimSidebarPanelSetAwayMsgBtn(){
  57.     dump("** aimsidebarpanelsetawaymsgbtn \n")
  58.   GetRDFService();
  59.   var sidebar_file = GetAwayMessagesFileLoc();
  60.   var datasource = RDF.GetDataSource(sidebar_file);
  61.  
  62.   menu = window.document.getElementById("btnbuddyorgaway");
  63.   menu.database.AddDataSource(datasource);
  64.   menu.setAttribute('ref', menu.getAttribute('ref'));
  65.  
  66.   menu = window.document.getElementById("btnsetuporgaway");
  67.   menu.database.AddDataSource(datasource);
  68.   menu.setAttribute('ref', menu.getAttribute('ref'));
  69.   
  70.  
  71.  
  72. }
  73.  
  74. function AimSidebarPanelOnWndUnload() {
  75.  
  76.     // Save signon fields if offline. If online, we saved during signon.
  77.     var state = AimDataSource.GetTarget(AimSession, SessionState, true);
  78.     GetRDFService();
  79.     if (state == null || state.EqualsNode(RDF.GetLiteral("Offline")))
  80.         SaveFieldsToPrefs();
  81.  
  82.     AimDataSource.RemoveObserver(OnlineObserver);
  83. }
  84.  
  85. function InitFieldsFromPrefs() {
  86.  
  87. dump( "InitFieldsFromPrefs()\n" );
  88.  
  89.     var screenName = aimPrefsManager().GetCharPref("aim.session.screenname", null, true);
  90.     //var password = aimPrefsManager().GetCharPref("aim.session.password", null, false);
  91.     var password = aimSessionGetPassword(null);
  92.     var savePassword = aimPrefsManager().GetBoolPref("aim.session.storepassword", null, false);
  93.     var autoLogin = aimPrefsManager().GetBoolPref("aim.session.autologin", null, false);
  94.  
  95.     document.getElementById('fldScreenName').value = screenName;
  96.     // need to select this if possible
  97.     //document.getElementById('fldScreenName').setSelectionRange(0,-1);
  98.  
  99.     document.getElementById('chkSavePassword').checked = savePassword;
  100.  
  101.     if(savePassword)
  102.         document.getElementById('fldPassword').value = password;
  103.  
  104.     document.getElementById('chkAutoLogin').checked = autoLogin;
  105.     //Temporary workaround for password field showing text
  106.     //Giving focus causes asterisks to appear properly
  107.     //document.getElementById('fldPassword').focus()
  108.     EnableInputs();
  109. }
  110.  
  111. function SaveFieldsToPrefs() {
  112. dump( "SaveFieldsFromPrefs()\n" );
  113.  
  114.     var screenName = document.getElementById('fldScreenName').value;
  115.     var password = document.getElementById('fldPassword').value;
  116.     var autoLogin = document.getElementById('chkAutoLogin').checked;
  117.     var savePassword = document.getElementById('chkSavePassword').checked;
  118.  
  119.       aimPrefsManager().SetCharPref("aim.session.screenname", screenName, null, true);
  120.  
  121.     if (savePassword)
  122.         aimSessionSavePassword(password);//prefs.SetCharPref("aim.session.password", password);
  123.     else
  124.         aimSessionSavePassword("");//prefs.SetCharPref("aim.session.password", "");
  125.  
  126.     aimPrefsManager().SetBoolPref("aim.session.storepassword", savePassword, null, false);
  127.     aimPrefsManager().SetBoolPref("aim.session.autologin", autoLogin, null, false);
  128. }
  129.  
  130. function EnableInputs() {
  131.     var password = document.getElementById("fldPassword").value;
  132.     var savePassword = document.getElementById("chkSavePassword").checked;
  133.  
  134.     if (password != "") {
  135.         document.getElementById("chkSavePassword").disabled = false;
  136.         document.getElementById("chkAutoLogin").disabled = !savePassword;
  137.  
  138.         // XXX This is what the AIM 3.0 client does. Not sure if we should
  139.         //     change it.
  140.         if (!savePassword)
  141.             document.getElementById("chkAutoLogin").checked = false;
  142.     }
  143.     else {
  144.         document.getElementById("chkSavePassword").disabled = true;
  145.         document.getElementById("chkAutoLogin").disabled = true;
  146.  
  147.         // XXX This is what the AIM 3.0 client does. Not sure if we should
  148.         //     change it.
  149.         document.getElementById("chkSavePassword").checked = false;
  150.         document.getElementById("chkAutoLogin").checked = false;
  151.     }
  152. }
  153.  
  154. function TellParentState(state)
  155. {
  156.   var parentState = top.document.getElementById("AimSidebarState");
  157.   if(!parentState)
  158.     return;
  159.  
  160.   parentState.setAttribute("AimState", state);
  161. }
  162.  
  163. function TellParentTab(curTab)
  164. {
  165.     var parentState = top.document.getElementById("AimSidebarState");
  166.     if(!parentState)
  167.         return;
  168.  
  169.   dump("XXX Tab state = " + curTab + "\n");
  170.     parentState.setAttribute("AimSidebarTab", curTab); 
  171. }
  172.  
  173. /****************  RDF Observing ********************/
  174.  
  175. var OnlineObserver = new Object();
  176.  
  177. OnlineObserver.onAssert = function(datasource, source, property, target)
  178. {
  179.     if(source.EqualsNode(AimSession))
  180.     {
  181.         if(property.EqualsNode(SessionState))
  182.         {
  183.             var state = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
  184.  
  185.             dump('OnlineState: ' + state + '\n');
  186.  
  187.             document.getElementById("SignOnOrg").setAttribute("OnlineState", state);
  188.             document.getElementById("ConnectingOrg").setAttribute("OnlineState", state);
  189.             document.getElementById("OnlineOrg").setAttribute("OnlineState", state);
  190.             document.getElementById("AwayOrg").setAttribute("OnlineState", state);
  191.             document.getElementById("RegisterOrg").setAttribute("OnlineState", state);
  192. //            document.getElementById("AwayOrg").setAttribute("OnlineState", state);
  193.  
  194.             TellParentState(state);
  195.  
  196.             if (state != "Offline" && state != "Online" && state != "Register" && state != "OnlineAway")
  197.             {
  198.                 var str = aimString("btnSignOnProgress." + state);
  199.                 document.getElementById("btnSignOnProgress").setAttribute("value", str);
  200.                 var theProgressBar = document.getElementById("spconnectingprogressbar001");
  201.                 theProgressBar.setAttribute("value",parseInt(theProgressBar.getAttribute("value"))+20)
  202.             }
  203.  
  204.             if(state == "Offline" || state == "Online" || state == "OnlineAway")
  205.             {
  206.                 throbberObserver = top.document.getElementById("IM:Throbber");
  207.                 if(throbberObserver)
  208.                     throbberObserver.setAttribute("busy", "false");
  209.                 if(state == "Offline")
  210.                     {
  211.                     taskIconObserver = top.document.getElementById("IM:TaskIcon");
  212.                     if(taskIconObserver)
  213.                         taskIconObserver.setAttribute("online-state", "offline");
  214.                     }
  215.                 else
  216.                     {
  217.                     taskIconObserver = top.document.getElementById("IM:TaskIcon");
  218.                     if(taskIconObserver)
  219.                         taskIconObserver.setAttribute("online-state", "online");
  220.                     aimMigrateBuddyList( aimSessionCurrentScreenName() );
  221.                     }
  222.             }
  223.  
  224.             // If returning to offline state, reinitialize the signon screen fields,
  225.             // which appear to be cleared out when they are hidden. We also do this
  226.             // when the form is loaded.
  227.             if (state == "Offline")
  228.                 InitFieldsFromPrefs();
  229.         }
  230.     }
  231. };
  232.  
  233. OnlineObserver.onUnassert = function(datasource, source, property, target)
  234. {
  235.     // XXX Do we need to remove the attribute here ???
  236. };
  237.     
  238. OnlineObserver.onChange = function(datasource, source, property, oldTarget, newTarget)
  239. {
  240.     OnlineObserver.onAssert(datasource, source, property, newTarget);
  241. };
  242.     
  243. OnlineObserver.onMove = function(datasource, oldSource, newSource, property, target)
  244. {
  245.     OnlineObserver.onAssert(datasource, newSource, property, target);
  246. };
  247.  
  248. OnlineObserver.beginUpdateBatch = function(datasource)
  249. {
  250. };
  251.  
  252. OnlineObserver.endUpdateBatch = function(datasource)
  253. {
  254. };
  255.  
  256. /**************** Command Handlers ******************/
  257.  
  258. function cmdPanelSignOn() 
  259. {
  260.     SaveFieldsToPrefs();
  261.  
  262.     var screenName = document.getElementById('fldScreenName').value;
  263.     var password = document.getElementById('fldPassword').value;
  264.  
  265.     aimSessionLogin(screenName, password);
  266.     throbberObserver = top.document.getElementById("IM:Throbber");
  267.     if(throbberObserver)
  268.         throbberObserver.setAttribute("busy", "true");
  269. }
  270.  
  271. function cmdPasswordKeyup(event) {
  272.     // Enabled state of savePassword checkbox depends on
  273.     // empty/non-empty password field
  274.     EnableInputs();
  275.     if (event.keyCode == 13)
  276.         cmdPanelSignOn();
  277. }
  278.  
  279. function cmdScreenName(event) {
  280.     var screenName = document.getElementById('fldScreenName').value;
  281.     dump("cmdScreenName" + screenName + "\n");
  282.  
  283.     /* for (i in event) {
  284.         dump(i); dump ("->");
  285.         var j;
  286.         for (j in i) {
  287.             dump (j); dump (" ") ;  
  288.         } 
  289.         dump("\t");
  290.     }
  291.     //dump("which is " + event.which); */
  292.  
  293.     try {
  294.         var password = "";
  295.         try {
  296.         password = aimSessionGetPassword(screenName);
  297.         } catch (e) {}
  298.         document.getElementById('fldPassword').value = password; 
  299.         document.getElementById('fldPassword').setAttribute("value",password); 
  300.     } catch (e) {dump("exception\n");}
  301. }
  302.  
  303. function cmdClickSavePassword() {
  304.     // Enabled state of autoLogin checkbox depends on
  305.     // state of savePassword checkbox
  306.     EnableInputs();
  307. }
  308.  
  309. function cmdClickAutoLogin() {
  310. }
  311.  
  312. function cmdRegisterScreenName() {
  313.     var screenName = document.getElementById('fldRegisterName').value;
  314.  
  315.     if (screenName == '') {
  316.         aimErrorBox(aimString("msg.NoScreenName"));
  317.         return;
  318.     }
  319.   
  320.   // this will call into nsIAimSession, save the screen name in prefs and
  321.   // notify our observers to go from the register panel to the signon panel
  322.   aimSessionRegister(screenName);
  323.  
  324.     document.getElementById('fldScreenName').value = screenName;
  325. }
  326.  
  327. function cmdDoubleClick(event)
  328. {
  329.     var screenName = event.target.parentNode.parentNode.getAttribute('ScreenName');
  330. //    dump('double click: ' + event + ', ' + screenName + '\n');
  331.  
  332.     if(screenName) {
  333.         if ( aimIMDoesIMExist(screenName) )
  334.             // XXX should be entity
  335.             aimErrorBox(aimString("msg.DuplicateIM"));
  336.         else {
  337.             if ( aimBuddyIsOnline(screenName) )
  338.                 aimIMInvokeIMForm(screenName, null);
  339.             else
  340.                 aimIMInvokeIMForm("", null);
  341.         }
  342.     }
  343. }
  344. function cmdFocus(event)
  345.     {
  346.     dump('focus: ' + event.target.tagName + '\n');
  347.     }
  348. function cmdBlur(event)
  349.     {
  350.     dump('blur: ' + event.target.tagName + '\n');
  351.     }
  352. function cmdGroupKeyUp(event)
  353.     {
  354.     if (event.keyCode == 13)
  355.         {
  356.         var item = event.target.parentNode.parentNode.parentNode;
  357.         var name = item.getAttribute('Name');
  358.         var newName = event.target.value;
  359.  
  360.         dump('renameGroup: ' + name + ', ' + newName + '\n');
  361.         aimBuddyRenameBuddyGroup(name, newName);
  362.         }
  363.     }
  364. function cmdBuddyKeyUp(event)
  365.     {
  366.     if (event.keyCode == 13)
  367.         {
  368.         var item = event.target.parentNode.parentNode.parentNode;
  369.         var screenName = item.getAttribute('ScreenName');
  370.         var newName = event.target.value;
  371.  
  372.         var groupItem = item.parentNode.parentNode;
  373.         var groupName = groupItem.getAttribute('Name');
  374.  
  375.         var nextBuddy = null;
  376.         if (item.nextSibling)
  377.             nextBuddy = item.nextSibling.getAttribute('ScreenName');
  378.  
  379.         // XXX aimBuddyReplaceBuddy(groupName, screenName, newName);
  380.         aimBuddyRemoveBuddy(groupName, screenName);
  381.         aimBuddyAddBuddy(groupName, newName, nextBuddy);
  382.         }
  383.     }
  384. function spInPlaceAddBuddy()
  385.     {
  386.     dump('spInPlaceAddBuddy\n');
  387.     spInPlaceAddDelete( "AddBuddy" );
  388.     }
  389. function spAddBuddy()
  390.     {
  391.     val = prompt( "Enter Buddy Name","" );
  392.     }
  393. function spAddGroup()
  394.     {
  395.     val = prompt( "Enter Group Name", "" );
  396.     }
  397. function spInPlaceAddGroup()
  398.     {
  399.     dump('spInPlaceAddGroup\n');
  400.     spInPlaceAddDelete( "AddGroup" );
  401.     }
  402. function spInPlaceDelete()
  403.     {
  404.     dump('spDelete\n');
  405.     spInPlaceAddDelete( "Delete" );
  406.     }
  407.  
  408. function spInPlaceAddDelete( what )    // "Delete", "AddGroup", "AddBuddy"
  409.     {
  410.     // Locate selection in setup list
  411.     // XXX There must be a better way to do this
  412.     var selectedGroup = null;
  413.     var selectedBuddy = null;
  414.     var tree = document.getElementById("ListSetup");
  415.     var groups = tree.childNodes[2].childNodes;
  416.     for (var i = 0; i != groups.length; i++)
  417.         {
  418.         if (groups[i].getAttribute("selected") == "true")
  419.             {
  420.             selectedGroup = groups[i].getAttribute("Name");
  421.             break;
  422.             }
  423.  
  424.         var buddies = null;
  425.         for (var j = 0; j != groups[i].childNodes.length; j++)
  426.             {
  427.             if (groups[i].childNodes[j].nodeName == "treechildren")
  428.                 {
  429.                 buddies = groups[i].childNodes[j].childNodes;
  430.                 break;
  431.                 }
  432.             }
  433.  
  434.         if (buddies)
  435.             {
  436.             for (var j = 0; j != buddies.length; j++)
  437.                 {
  438.                 if (buddies[j].getAttribute("selected") == "true")
  439.                     {
  440.                     selectedBuddy = buddies[j].getAttribute("ScreenName");
  441.                     break;
  442.                     }
  443.                 }
  444.  
  445.             if (selectedBuddy)
  446.                 {
  447.                 selectedGroup = groups[i].getAttribute("Name");
  448.                 break;
  449.                 }
  450.             }
  451.         }
  452.  
  453.     dump('  selectedGroup: ' + selectedGroup + '\n');
  454.     dump('  selectedBuddy: ' + selectedBuddy + '\n');
  455.  
  456.     if (what == "AddBuddy")
  457.         aimBuddyAddBuddy(selectedGroup, null, selectedBuddy);
  458.     else if (what == "AddGroup")
  459.         aimBuddyAddBuddyGroup(null, selectedGroup);
  460.     else if (what == "Delete")
  461.         {
  462.         if (selectedBuddy)
  463.             aimBuddyRemoveBuddy(selectedGroup, selectedBuddy);
  464.         else if (selectedGroup)
  465.             aimBuddyRemoveBuddyGroup(selectedGroup);
  466.         }
  467.     }
  468.  
  469. function spFindEmpty( display )    
  470. {
  471.     // Locate selection in setup list
  472.     // XXX There must be a better way to do this
  473.     var selectedGroup = null;
  474.     var selectedBuddy = null;
  475.     var tree = document.getElementById("ListSetup");
  476.     var groups = tree.childNodes[2].childNodes;
  477.  
  478.     dump( "In spFindEmpty\n" );
  479.     for (var i = 0; i != groups.length; i++)
  480.     {
  481.         var buddies = null;
  482.         for (var j = 0; j != groups[i].childNodes.length; j++)
  483.         {
  484.             if (groups[i].childNodes[j].nodeName == "treechildren")
  485.             {
  486.                 buddies = groups[i].childNodes[j].childNodes;
  487.                 break;
  488.             }
  489.         }
  490.  
  491.         if (buddies)
  492.         {
  493.             for (var j = 0; j != buddies.length; j++)
  494.             {
  495.                 if (buddies[j].getAttribute("ScreenName") == "")
  496.                 {
  497.                     dump( "Found a screen name that is empty\n" );
  498.                     selectedBuddy = buddies[j];
  499.                     if ( display == "none" ) {
  500.                         dump( "Setting style to display: none\n" );
  501.                         selectedBuddy.setAttribute("style", "visibility: hidden;");
  502.                         selectedBuddy.setAttribute("Yabba", "Dabba;");
  503.                     }
  504.                     else {
  505.                         dump( "Setting style to display: block\n" );
  506.                         selectedBuddy.setAttribute("style", "visibility: visible;");
  507.                     }
  508.                 }
  509.                 if (buddies[j].getAttribute("type") == "text")
  510.                 {
  511.                     dump( "Found an object that has a type of 'text'\n" );
  512.                 }
  513.             }
  514.         }
  515.     }
  516.  
  517.     dump('  selectedGroup: ' + selectedGroup + '\n');
  518.     dump('  selectedBuddy: ' + selectedBuddy + '\n');
  519. }
  520. /*
  521. function displayFrontTab(tabObj)
  522. {
  523.     tabOne=document.getElementById('tabOnline');
  524.     tabTwo=document.getElementById('tabSetup');
  525.     tabOne.setAttribute("style","");
  526.     tabTwo.setAttribute("style","");
  527.     tabObj.setAttribute("style","");
  528. }
  529.  
  530. */
  531.  
  532. function toOpenWindowByType2( inType, uri )
  533. {
  534.     dump ("toOpenWindowByType " + uri + " \n");
  535.  
  536.     var windowManager = Components.classes['@mozilla.org/rdf/datasource;1?name=window-mediator'].getService();
  537.  
  538.     var    windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
  539.  
  540.     var topWindow = windowManagerInterface.getMostRecentWindow( inType );
  541.     
  542.     if ( topWindow ) {
  543.         topWindow.focus();
  544.         //AimWindowLoad2(topWindow);
  545.     }
  546.     else
  547.         window.openDialog(uri, "_blank", "chrome,all,titlebar,dialog=no", "Setup");
  548. }
  549.  
  550. /*** setup chat callbacks for rendezvous ***/
  551. /** start services **/
  552. var IMServiceClass = Components.classes['@netscape.com/aim/IMManager;1'];
  553. var pIIMManager  = IMServiceClass.getService(Components.interfaces.nsIIMManager);
  554. var ChatManager = pIIMManager.QueryInterface(Components.interfaces.nsIAimChatManager);
  555.  
  556. /*** setup the chat call backs **/
  557.  var ChatCallback = new Object();
  558.  
  559.  ChatCallback.OnRequestRoomComplete =  function(roomName,chatRoomObj){
  560.   dump("OnRequestRoomComplete: success on " + roomName + "\n");
  561.  
  562.   chatRoomObj.SetChatRoomCallback(ChatRoomCallback);
  563.  
  564.  top.chatRoomObj = chatRoomObj;
  565.   window.setTimeout('top.chatRoomObj.Join()', 5000);
  566.   window.setTimeout('top.chatRoomObj.Invite("vishy26aug", "Join this MAAN")', 10000);
  567.   window.setTimeout('top.chatRoomObj.SendMessage("This is working!!")', 30000);
  568.   window.setTimeout('top.chatRoomObj.SendWhisper("vishy26aug", "Private message for vishy26aug")', 30000);
  569.  }
  570.  
  571.  
  572.  ChatCallback.OnRequestRoomError =  function(roomName,errMsg){
  573.   dump("OnRequestRoomError: there was an error \n");
  574.  
  575.  }
  576.  
  577. /** setup the chat Room callbacks **/
  578.  
  579.  var ChatRoomCallback = new Object();
  580.  
  581.  ChatRoomCallback.OnJoined = function()
  582.  {
  583.   dump("Yes I Joined\n");
  584.  }
  585.  
  586.  ChatRoomCallback.OnUserJoined = function(screenName)
  587.  {
  588.   dump( screenName + "joined the chat\n");
  589.  }
  590.  
  591.  ChatRoomCallback.OnInfoUpdate = function()
  592.  {
  593.  }
  594.  
  595.  ChatRoomCallback.OnMessageReceived = function(screenName, language, message)
  596.  {
  597.   dump (screenName + " SAYETH " + message + " IN " + language +"\n");
  598.  }
  599.  
  600.  
  601.  
  602. var rendezvousCallback = new Object();
  603.  
  604. rendezvousCallback.OnProposalReceived = function (screenname, proposal)
  605. {
  606.     dump ("got a proposal from " + screenname + "\n");
  607.  
  608.      //proposal.Accept();
  609.      inviteArgsObj = {
  610.          inviteProposalScreenName: screenname, 
  611.          inviteProposalObj: proposal,
  612.          invitedScreenNames: '',
  613.          inviteToExistingWindow: false,
  614.          inviteMode: 'incomingchat'
  615.          }
  616.      dump('send proposal to dialog! \n;')
  617.     window.openDialog('chrome://aim/content/chatInviteBuddy.xul','_blank','chrome,all,dialog=no',inviteArgsObj); 
  618.     
  619.      //dump("accepted the proposal");
  620.  
  621.      //ChatManager.RequestProposedRoom(ChatCallback, proposal);
  622.  
  623.  }
  624.  
  625. function setupChatRendezvous(){
  626.     dump("entering setupChatRendezvous 3\n");
  627.     ChatManager.SetChatRendezvousCallback(rendezvousCallback)
  628.     dump("exiting setupChatRendezvous \n");
  629. }
  630.  
  631.  
  632. /***  end setup chat callbacks for rendezvous ***/
  633.  
  634. function cmdNewChatSidebar(invScreenName,invProposal,invScreenNames,toExistingWindow,invMode){
  635.  
  636.      inviteArgsObj = {
  637.          inviteProposalScreenName: invScreenName, 
  638.          inviteProposalObj: invProposal,
  639.          invitedScreenNames: getSelectedBuddiesFromList(), //invScreenNames, (getSelectedBuddiesFromList is in App.js)
  640.          inviteToExistingWindow: toExistingWindow,
  641.          inviteMode: invMode
  642.          }
  643.          
  644.     window.openDialog('chrome://aim/content/chatInviteBuddy.xul','_blank','chrome,all,dialog=no',inviteArgsObj);
  645. }
  646.  
  647.